package com.ihr360.payroll.service.payslip.result;

import cn.irenshi.entity.payslip.AppStaffPayslipDetailEntity;
import cn.irenshi.entity.payslip.AppStaffPayslipEntity;
import com.ihr360.payroll.model.dto.salary.payslip.PayslipResult;
import com.ihr360.payroll.model.dto.salary.report.HistoryPayPeriod;
import com.ihr360.payroll.model.dto.salary.task.period.ActivePayPeriod;
import com.ihr360.rest.service.SimpleRestService;

import javax.servlet.ServletOutputStream;
import java.util.List;
import java.util.Map;

/**
 * @author tomtao
 */
public interface PayslipResultService extends SimpleRestService<PayslipResult, Long> {

    /**
     * 关帐后生成薪资单结果
     *
     * notes: 如果没有匹配到方案的人则设置为默认工资单（原因：方案里面的人可能被删除，或者方案中的人没有添加工资单）
     *
     * @return
     */
    List<PayslipResult> generatePayslipResult(HistoryPayPeriod historyPayPeriod, ActivePayPeriod activePayPeriod);

    /**
     * 获取工资单表头
     *
     * @param id
     * @return
     */
    Map<String, String> getPayslipHead(Long id);

    /**
     * App端 获取员工工资单列表
     *
     * @param companyId
     * @param staffId
     * @param orderBy
     * @return
     */
    List<AppStaffPayslipEntity> getStaffPayslipList(String companyId, String staffId, int orderBy);

    /**
     * 获取工资单详情
     *
     * @param id
     * @return
     */
    AppStaffPayslipDetailEntity getStaffPayslipDetail(Long id);

    /**
     * 导出
     *
     * @param id
     * @param out
     */
    void exportPayslip(Long id, ServletOutputStream out);

    /**
     * 发布
     *
     * @param id
     * @return
     */
    PayslipResult publishPayslip(Long id);

    /**
     * 撤销发布
     *
     * @param id
     * @return
     */
    PayslipResult cancelPublishPayslip(Long id);

    /**
     * 修改工资单配置
     *
     * @param id
     * @param payslipConfigId
     * @return
     */
    PayslipResult changePayslipConfig(Long id, Long payslipConfigId);

}
